/*
 * Robot5API.h
 *
 */

#ifndef ROBOT5API_H_
#define ROBOT5API_H_

#include "../middleware/CommunicationRobot5.h"
#include "../middleware/CommunicationADP.h"
#include "../middleware/CommunicationPrimerCinta.h"
#include "../middleware/CommunicationRobot11.h"
#include "../application/AdminKeys.h"

namespace application {

class Robot5API {
public:
	Robot5API(string hostName);
	virtual ~Robot5API();
	int inicializar();
	int terminar();

	PendientesRobot5 verListaDeEventos();
	Canasto buscarCanastoDeADP(); //almacen de piezas	
	void darCanastoAlAGV(int idAGV,Canasto canasto);
	void liberarPendientes();
	
	PedidoCanasto verPedidoDeCanasto();
	void pedirCanastoAlADP(PedidoCanasto pc);
	PedidoCintas verPedidoDeCinta(); //el robot 11 le manda un pedido de cinta al 5
	PedidoProduccion verPedidoDeProduccion();
	void noHacerNada();
	int cantidadProductosEnCinta(int id);
	bool ponerProductoEnCinta(int cinta,Producto prod);

private:
	middleware::CommunicationRobot5 * m_ComRobot5;
	middleware::CommunicationADP *m_ComADP;
	middleware::CommunicationRobot11 *m_ComRobot11_A;
	middleware::CommunicationPrimerCinta *m_ComCinta_A;
	middleware::CommunicationRobot11 *m_ComRobot11_B;
	middleware::CommunicationPrimerCinta *m_ComCinta_B;
	PendientesRobot5 listaPedidos;
};

} /* namespace application */
#endif /* ROBOT5API_H_ */
